package co.edu.udea.iw.dao;

import java.util.List;

import co.edu.udea.iw.dto.Prestamo;
import co.edu.udea.iw.exception.IWDaoException;

/**
 * Interface que define los metodos que va a proveer el dao de Prestamo
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */
public interface PrestamoDAO {

	/**
	 * Entrega los datos de un prestamo dado su identificador
	 * 
	 * @param idPrestamo
	 *            Integer que es el identificador del prestamo a buscar
	 * @return instancia con los datos del prestamo obtenido, si no existe el
	 *         prestamo retorna null.
	 * @throws IWDaoException
	 */
	public Prestamo obtenerPrestamo(int idPrestamo) throws IWDaoException;

	/**
	 * Entrega la lista de todos los prestamos existentes en base de datos
	 * 
	 * @return lista prestamos
	 * @throws IWDaoException
	 */
	public List<Prestamo> obtenerPrestamos() throws IWDaoException;

	/**
	 * Agrega un prestamo
	 * 
	 * @param prestamo
	 *            Prestamo a agregar
	 * @return void
	 * @throws IWDaoException
	 */
	public void agregarPrestamo(Prestamo prestamo) throws IWDaoException;

	/**
	 * Elimina un prestamo
	 * 
	 * @param prestamo
	 *            Prestamo a eliminar
	 * @return void
	 * @throws IWDaoException
	 */
	public void eliminarPrestamo(Prestamo prestamo) throws IWDaoException;

	/**
	 * Actualiza un prestamo
	 * 
	 * @param prestamo
	 *            Prestamo a actualizar
	 * @return void
	 * @throws IWDaoException
	 */
	public void actualizarPrestamo(Prestamo prestamo) throws IWDaoException;

}
